home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’89 / ErrApp / errapp.p < prev    next >
Encoding:
Text File  |  1989-06-16  |  1.6 KB  |  102 lines  |  [TEXT/MPS ]

  1. {
  2. { how to make system errors (on purpose)
  3. {
  4. { written for MacHack '89
  5. {
  6. { by Duane Maxwell (Levco) & Marshall Clow (Palomar)
  7. {
  8. { © 1989 by Mothers Against the PhotoElectric Effect
  9. {    all rights reserved
  10. {
  11. }
  12.  
  13. program errapp;
  14.  
  15. uses
  16.     MemTypes, QuickDraw, ToolIntf, OSIntf, PackIntf, SANE;
  17.  
  18.  
  19. const
  20.     kDialog    =    128;
  21.     kOK        =    1;
  22.     kCancel    =    2;
  23.     kError    =    3;
  24.  
  25. type
  26.     longPtr = ^LongInt;
  27.     
  28. var
  29.     gDone:Boolean;
  30.     gDialog:DialogPtr;
  31.     
  32. PROCEDURE MySysError(errorCode: INTEGER);
  33.     INLINE $301F,$A9C9;
  34.  
  35.  
  36. {$I errapp.inc1.p }
  37.  
  38.  
  39. procedure InitStuff;
  40.     begin
  41.         gDone:=FALSE;
  42.         InitGraf(@thePort);
  43.         InitFonts;
  44.         InitWindows;
  45.         InitMenus;
  46.         TEInit;
  47.         InitDialogs(NIL);
  48.         InitCursor;
  49.     end;
  50.  
  51. procedure DoStuff;
  52.     var
  53.         theError:LongInt;
  54.         itemHit:integer;
  55.         allOk:Boolean;
  56.         str:Str255;
  57.         aHandle:Handle;
  58.         aType:integer;
  59.         aBox:Rect;
  60.     begin
  61.         gDialog:=GetNewDialog(kDialog,Ptr(NIL),WindowPtr(NIL));
  62.         if    gDialog<>NIL then
  63.             begin
  64.                 allOK:=FALSE;
  65.                 repeat
  66.                     theError:=0;
  67.                     NumToString (theError,str);
  68.                     GetDItem (gDialog,kError,aType,aHandle,aBox);
  69.                     SetIText(aHandle,str);
  70.                     SelIText(gDialog,kError,0,32000);
  71.                     repeat
  72.                         ModalDialog(NIL,itemHit);
  73.                     until (itemHit=kOK) or (itemHit=kCancel);
  74.                     allOK:=(itemHit=kCancel);
  75.                     if itemHit=kOK then
  76.                         begin
  77.                             GetIText(aHandle, str);
  78.                             StringToNum(str,theError);
  79.                             allOK := (theError>-100) and (theError<100);
  80.                         end;
  81.                 until allOK;
  82.                 if itemHit=OK then
  83.                     DoSystemError(theError)
  84.                 else
  85.                     gDone:=TRUE;
  86.                 DisposDialog(gDialog);
  87.             end;
  88.     end;
  89.  
  90. procedure CleanUpStuff;
  91.     begin
  92.     end;
  93.  
  94. begin {main}
  95.     InitStuff;
  96.     repeat
  97.         DoStuff;
  98.     until gDone;
  99.     { if we work, this never happens}
  100.     CleanUpStuff;
  101. end.
  102.